<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Document</title>
</head>
<body>
  <script>
    function Person(name, age) {
      this.name = name,
      this.age = age,
      this.sayHi = function () {
        console.log('你好'),
      }
    }
    var zs = new Person('马大姐', 66);
    // 在构造函数的原型上添加方法 可以节省内存

    // 在开发中,如果要使用对象的属性，属性值都是一样的，如果要使用对象的方法，方法的操作也是一样的，这时候 就可以在构造函数的原型上添加方法和属性这样可以节省内存 共享数据


    // 什么是原型呢？
    // 在实例对象上有一个属性__proto__ 叫做原型或原型对象 他是一个属性也是一个对象 是给浏览器用的 不规范 不兼容
    // 在构造函数上有一个属性 prototype叫做原型或原型对象 他是一个属性也是一个对象 是给程序原 规范兼容


    // 什么是原型链呢?
    // 1.原型链指的是 原型和实例对象之间的关系
    // 2.实例对象的__proto__ 指向自己的构造函数的原型 这就是原型链
  </script>
</body>
</html>
